import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:pornhub_app/components/app_bg_view.dart';
import 'package:pornhub_app/components/rich_text_view.dart';
import 'package:pornhub_app/components/text_view.dart';
import 'package:pornhub_app/generate/app_image_path.dart';
import 'package:pornhub_app/utils/color.dart';
import 'package:pornhub_app/utils/extension.dart';
import 'package:pornhub_app/utils/logger.dart';

class BuyHintDialog extends StatelessWidget {
  final Function() onTap;

  BuyHintDialog({required this.onTap});

  @override
  Widget build(BuildContext context) {
    return Wrap(
      children: [
        AppBgView(
          width: double.infinity,
          backgroundColor: COLOR.color_111,
          borderRadius: BorderRadius.only(
            topLeft: Radius.circular(15.w),
            topRight: Radius.circular(15.w),
          ),
          padding: EdgeInsets.symmetric(horizontal: 20.w),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              20.verticalSpace,

              ///title
              SizedBox(
                width: double.infinity,
                child: Stack(
                  alignment: Alignment.center,
                  children: [
                    TextView(
                      text: "必读",
                      color: COLOR.white,
                      fontSize: 16.w,
                      fontWeight: FontWeight.w700,
                    ),
                    Positioned(
                        top: 0,
                        right: 0,
                        child: Icon(
                          Icons.close,
                          color: COLOR.white,
                          size: 20.w,
                        ).onTap(() => Get.back())),
                  ],
                ),
              ),
              20.verticalSpace,
              RichTextView(
                text:
                    "付款过程中若遇到系统提示「恶意病毒」「成人内容」「诈骗软件」，请直接「忽略」即可，只要是成人APP都会被官方强行纳入诈骗名单，属正常现象！"
                    "\n\n平台承诺本产品「安全无毒，无任何隐私获取」，请放心体验充值！",
                regex: RegExp(r'「.*?」'),
                style: TextStyle(color: Colors.white, fontSize: 12.w),
                highlightStyle:
                    TextStyle(color: COLOR.color_B93FFF, fontSize: 12.w),
              ),

              30.verticalSpace,
              AppBgView(
                width: double.infinity,
                height: 35.w,
                radius: 18.w,
                imagePath: AppImagePath.btn_bg_2,
                text: "我知道了",
                textColor: COLOR.white,
                textSize: 16.w,
                onTap: () {
                  Get.back();
                  onTap.call();
                },
              ),
              30.verticalSpace,
            ],
          ),
        ),
      ],
    );
  }

  TextSpan _highlightText(String text) {
    List<TextSpan> spans = [];
    int startIndex = 0;

    // 使用正则表达式匹配「开头」和「结尾」的部分
    final regex = RegExp(r'「.*?」'); // 匹配以「开头，以」结尾的部分

    // 在字符串中查找符合规则的部分
    Iterable<Match> matches = regex.allMatches(text);

    // 如果没有匹配项，直接返回原始文本
    if (matches.isEmpty) {
      return TextSpan(
        text: text,
        style: TextStyle(color: Colors.white, fontSize: 12.w), // 默认颜色
      );
    }

    // 遍历所有匹配项，进行高亮
    for (var match in matches) {
      int matchStart = match.start;
      int matchEnd = match.end;

      // 添加匹配部分之前的普通文本
      if (matchStart > startIndex) {
        spans.add(TextSpan(
          text: text.substring(startIndex, matchStart),
          style: TextStyle(color: Colors.white, fontSize: 12.w), // 默认颜色
        ));
      }

      // 添加高亮部分
      spans.add(TextSpan(
        text: text.substring(matchStart, matchEnd),
        style: TextStyle(color: COLOR.color_B93FFF, fontSize: 12.w), // 高亮颜色
      ));

      // 更新起始位置
      startIndex = matchEnd;
    }

    // 添加剩余的普通文本（确保文本的结尾部分也显示）
    if (startIndex < text.length) {
      spans.add(TextSpan(
        text: text.substring(startIndex),
        style: TextStyle(color: Colors.white, fontSize: 12.w), // 默认颜色
      ));
    }

    return TextSpan(children: spans);
  }
}
